/**
 * HubMediator.java
 * 10/05/2011 22:37:15
 */
package model.mediator;

import model.memento.Movement;

/**
 * @author walber
 * 
 */
public interface HubMediator {

	/**
	 * Agregar un colleague al dominio de broadcasting del hub
	 * 
	 * @param colleague
	 */
	public void addBroadcastColleague(HubColleague colleague);

	/**
	 * Borrar un colleague del dominio de broadcasting del hub
	 * 
	 * @param colleague
	 */
	public void removeBroadcastColleague(HubColleague colleague);

	/**
	 * Difundir un movimiento multiple por el dominio.
	 * 
	 * @param source
	 * @param move
	 */
	public void requestMultiMovement(HubColleague source, Movement move);

	/**
	 * Difundir un movimiento simple por el dominio.
	 * 
	 * @param source
	 * @param move
	 */
	public void requestSingleMovement(HubColleague source, Movement move);

	/**
	 * Difundir un rechazo de movimiento por el dominio.
	 * 
	 * @param source
	 * @param move
	 */
	public void refuseMovement(HubColleague source, Movement move);

	/**
	 * Difundir una posicion abandonada por el dominio.
	 * 
	 * @param source
	 * @param move
	 */
	public void leavePosition(HubColleague source, int col, int row);

}
